// @testDec
// class Demo {



// }

// function testDec(target) {
//     console.log('target', target);
//     target.isDec = true
// }
// alert(Demo.isDec)


// @testDec('我是参数')
// class Demo {

// }

// function testDec(isDec) {
//     return function(target) {
//         target.isDec = isDec
//     }

// }
// alert(Demo.isDec)

// function mixins(...list) {
//     return function (target) {
//         console.log('list', list);
//         console.log('target', target);
//         console.log('target', target.prototype);
//         Object.assign(target.prototype, ...list)
//     }
    
// }

// let Foo = {
//     foo() {
//         console.log('foo');
//     },
//     boo() {
//         console.log('boo');
//     }
// }

// @mixins(Foo)
// class MyClass {

// }

// let p = new MyClass()
// p.foo()
// p.boo()

// function readonly (target, name, descriptor) {
//     descriptor.writable = false
//     return descriptor
// }

// class Person {
//     constructor() {
//         this.first = 'A'
//         this.last = 'B'
//     }

//     // 装饰方法
//     @readonly
//     name() { return `${this.first} ${this.last}`}
// }

// var p = new Person()
// console.log(p.name());

// // 报错，只读属性 不能修改
// p.name = function() {}


// function log(target, name, descriptor) {
//     console.log(target, name, descriptor, arguments);
//     let oldValue = descriptor.value
//     descriptor.value = function() {
//         console.log(`calling ${name} width`, this);
//         return oldValue.apply(this, arguments)
//     }
//     return descriptor
// }

// class Math {
//     // 装饰方法
//     @log
//     add(a,b) {
//         return a + b
//     }
// }

// let math = new Math()
// const result = math.add(2,4)
// console.log('result', result);

import {readonly, decorate} from 'core-decorators'

